/*
功能列表
1，全选功能
选中所有行，汇总价格
2，单选功能
选中或取消选中一行
3，数量加减按钮
增减商品数量，计算小计价格
4，删除按钮
移除当前行，重新计算总计价格
5，删除被选中的商品

*/

// 获取所有文本框
var inputs = document.querySelectorAll(".unum");
// 获取所有行
var columns = document.querySelectorAll(".column");
// 获取所有单选框
var chooses = document.querySelectorAll(".choose");
// 获取所有全选按钮
var choose_alls = document.querySelectorAll(".choose_all");
// 获取所有删除按钮
var btn_dels = document.querySelectorAll(".btn-del");
// 删除选中的商品
var del_check = document.querySelector(".del_check");
// 获取前往订单的按钮
var btn_pay_fr = document.getElementById("pay");


var increases = document.getElementsByClassName("btn-plus");
var reduce = document.getElementsByClassName("btn-minus")

var disBtn = document.getElementById("disBtn");

//用于打开页面时统计每个商品的小计价格
function setUprice() {
    // 重新获取行
    columns = document.querySelectorAll(".column");
    // 遍历所有行
    for (var i = 0; i < columns.length; i++) {
        // 获取单价（得到的是字符串，不是数字，需要转化）
        var unitprice = columns[i].querySelector(".unit").innerHTML.substring(1);
        console.log("uprice"+unitprice)
        // 获取商品数量
        var num = columns[i].querySelector(".unum").value;
        console.log("num"+num)
        // 把单价，商品数量转化为数字
        unitprice = Number(unitprice);
        num = Number(num);
        // 计算商品现在的小计价格
        var uprice = num * unitprice;
        // 保留两位小数
        uprice = uprice.toFixed(2);

        // 把总计放在它应在的位置
        var utotalPrice = columns[i].querySelector(".u-price");
        console.log(uprice);
        utotalPrice.innerHTML = '￥'+uprice;
    }
}

setUprice();

disBtn.addEventListener("click",doDiscount)

function doDiscount()
{
    var s = document.getElementById("disId").value;
    console.log(s)
    if(s === "ssd4")
        {
            var discount = document.querySelector(".discount");
            discount.innerHTML = "￥666";
            setTotal();
        }
    else
    {
        alert("优惠码不存在");
    }
}

//绑定加减事件
for (var i = 0, l = increases.length; i < l; i++)
{
    increases[i].addEventListener("click", doIncrease);
    reduce[i].addEventListener("click", doReduce);
    console.log(increases[i]);
}

function doIncrease() {
    var id = this.getAttribute("id")
    $.ajax(
        {
            type: 'POST',
            url: 'http://localhost:8080/petstore/cartEdit?itemId=' + id + '&type=1',
            success: function (data) {
                console.log(data)
                if(data === "0")
                {
                    var row = document.getElementById("row"+id);
                    row.remove();
                    setTotal();
                }
                else
                {
                    document.getElementById("ip" + id).setAttribute("value", data)
                    var price = Number(document.getElementById("price" + id).innerText.substring(1))
                    document.getElementById("up" + id).innerHTML = '￥'+(price * Number(data)).toFixed(2).toString();
                    setTotal();
                }
            },
            error: function (errorMsg) {
                alert("操作失败，请稍后重试。");
                console.log("fail")
                console.log(errorMsg);
            },
        })
}

function doReduce() {
    var id = this.getAttribute("id")
    $.ajax(
        {
            type: 'POST',
            url: 'http://localhost:8080/petstore/cartEdit?itemId=' + id + '&type=0',
            success: function (data) {
                console.log(data)
                if(data === "0")
                {
                    var row = document.getElementById("row"+id);
                    row.remove();
                    setTotal();
                }
                else
                {
                    document.getElementById("ip" + id).setAttribute("value", data);
                    var price = Number(document.getElementById("price" + id).innerText.substring(1))
                    document.getElementById("up" + id).innerHTML = '￥'+(price * Number(data)).toFixed(2).toString();
                    setTotal();
                }
            },
            error: function (errorMsg) {
                alert("操作失败，请稍后重试。");
                console.log("fail")
                console.log(errorMsg);
            },
        })
}


// 删除当前行
for (var i = 0; i < btn_dels.length; i++)
{
    btn_dels[i].onclick = doDel;
}

// 删除选中行
del_check.onclick = function () {
    if(!window.confirm("您确定要删除所选项吗？"))
    {
        return;
    }
    rows = document.querySelectorAll(".column");
    for (var i = 0; i < rows.length; i++) {
        var checkbox = rows[i].querySelector(".choose");
        if (checkbox.checked) {
            var id = checkbox.getAttribute("id")
            document.getElementById("del"+id).onclick();
        }
    }
}

function doDel()
{
    if(!window.confirm("您确定要删除该项吗？"))
    {
        return;
    }
    var id = this.getAttribute("id");
    var reg = new RegExp("del")
    id = id.replace(reg,"");
    $.ajax(
        {
            type: 'POST',
            url: 'http://localhost:8080/petstore/cartEdit?itemId=' + id + '&type=-1',
            success: function (data)
            {
                if(data === "0")
                {
                    console.log(id);
                    var row = document.getElementById("row"+id);
                    console.log(row);
                    row.remove();
                    setTotal();
                }
                else
                {
                    document.getElementById("ip" + id).setAttribute("value", data);
                    var price = Number(document.getElementById("price" + id).innerText)
                    document.getElementById("up" + id).innerHTML = (price * Number(data)).toFixed(2).toString();
                    setTotal();
                }
            },
            error: function (errorMsg)
            {
                alert("操作失败，请稍后重试。");
                console.log("fail")
                console.log(errorMsg);
            },
        })
}

//更改结账按钮状态
function jumpTo() {
    for (var i = 0; i < chooses.length; i++) {
        if (chooses[i].checked == true) {
            btn_pay_fr.disabled = false;
            btn_pay_fr.removeAttribute("style");
            break;
        } else {
            btn_pay_fr.disabled = true;
            btn_pay_fr.style.backgroundColor = "grey";
            btn_pay_fr.style.borderColor = "grey";
            btn_pay_fr.style.color = "white";
        }
    }
}
// 计算总计价格 & 计算选中的商品总数 & 同时判断是否全选
function setTotal()
{
    var fDiv = document.querySelector(".floating");
    var row = document.querySelector(".hs")
    if(document.querySelectorAll(".column").length < 5)
    {
        row.style.height = fDiv.clientHeight+20+'px';
        fDiv.style.top = '0px';
    }
    var total = 0;  // 商品总价
    var allNum = 0; // 商品总数
    // 重新获取行
    columns = document.querySelectorAll(".column");
    // 遍历所有行
    for (var i = 0; i < columns.length; i++) {
        // 查找被选中的行
        var checkbox = columns[i].querySelector(".choose");
        if (checkbox.checked) {

            // 获取小计价格（得到的是字符串，不是数字，需要转化）
            var smallTotal = columns[i].querySelector(".u-price").innerHTML.substring(1);
            // 获取商品数量
            var num = columns[i].querySelector(".unum").value;
            // 把小计价格转化为数字
            smallTotal = Number(smallTotal);
            total += smallTotal;
            // 计算商品总数
            num = Number(num);
            allNum += num;
        }
    }

    // 把总计放在它应在的位置
    var totalPrice = document.querySelector(".t-price");
    var discount = document.querySelector(".discount").innerHTML.substring(1);
    var lastPrice = document.querySelector(".l-price");
    totalPrice.innerHTML = "￥" + total.toFixed(2);
    if(total > discount)
        lastPrice.innerHTML = "￥" + (total-discount).toFixed(2);
    else
        lastPrice.innerHTML = "￥0.00";
    // 设置商品总数
    document.querySelector(".t-number").innerHTML = allNum;

    var isCheckAll = true;
    for (var i = 0; i < columns.length; i++) {
        var checkbox = columns[i].querySelector(".choose");
        if (!checkbox.checked) {
            isCheckAll = false;
            break;
        }
    }
    if (columns.length <= 0) {
        isCheckAll = false;
    }
    // 将两个全选框设置为和全选变量相同的值
    choose_alls[0].checked = isCheckAll;
}

// 单选框点击事件
for (var i = 0; i < chooses.length; i++) {
    chooses[i].onclick = function () {
        // 求一下总计就行
        setTotal();
        jumpTo();
    }
}

// 全选框点击事件
for (var i = 0; i < choose_alls.length; i++) {
    choose_alls[i].onclick = function () {
        // 全选/全不选所有单选框
        for (var i = 0; i < columns.length; i++) {
            var checkbox = columns[i].querySelector(".choose");
            checkbox.checked = this.checked;
        }
        // 与另外一个全选框联动
        choose_alls[0].checked = this.checked;
        // 计算总计
        setTotal();
        jumpTo();
    }
}

setTotal();

window.onscroll = function() {
    var fDiv = document.querySelector(".floating");
    var f = fDiv.parentElement;
    if(document.querySelectorAll(".column").length < 5)
    {
        return
    }
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    var top = Math.min(scrollTop,f.clientHeight-fDiv.clientHeight-30);
    fDiv.style.top = ''+top+'px';

}